home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 25 / CU Amiga Magazine's Super CD-ROM 25 (1998)(EMAP Images)(GB)(Track 1 of 2)[!][issue 1998-08].iso / CUCD / Programming / QuakeTools / src / libqsys / m68k / Match.S < prev   
Encoding:
Text File  |  1998-06-04  |  969 b   |  62 lines

  1.     
  2.     
  3.     
  4.     
  5.     
  6.     
  7.     .equ    rawR,a3
  8.     .equ    rawG,a2
  9.     .equ    rawB,a0
  10.     .equ    pal,a1
  11.     .equ    rawpix,a0
  12.     
  13.     .equ    palpix,d4
  14.     .equ    i,d3
  15.     .equ    match,d2
  16.     .equ    thismatch,d1
  17.  
  18.     .globl    _Match
  19. _Match:    moveml    d2-d4/a2-a3,sp@-
  20.     moveq    #0,d0    
  21.     moveb    rawpix@+,d0
  22.     movel    d0,rawR            | .l -> an faster than .w -> an
  23.     moveb    rawpix@+,d0
  24.     movel    d0,rawG
  25.     moveb    rawpix@+,d0
  26.     movel    d0,rawB
  27.     
  28.     movew    #0x7FFF,match        | match never greater then 765 and ever positive
  29.     movew    #255,i
  30.  
  31. loopM:    moveq    #0,thismatch
  32.     moveb    pal@+,thismatch
  33.     subl    rawR,thismatch        | an -> .l faster than an -> .w
  34.     bges    .skipR
  35.     negl    thismatch
  36. .skipR:    moveb    pal@+,d0
  37.     subl    rawG,d0
  38.     bges    .skipG
  39.     negl    d0
  40. .skipG:    addl    d0,thismatch
  41.     moveb    pal@+,d0
  42.     subl    rawB,d0
  43.     bges    .skipB
  44.     negl    d0
  45. .skipB:    addl    d0,thismatch
  46.     beqs    fastMatch
  47.     cmpw    match,thismatch
  48.     bges    noMatch
  49.     movew    thismatch,match
  50.     movew    i,palpix
  51. noMatch:
  52.     dbra    i,loopM
  53.     movew    #255,d0
  54.     subw    palpix,d0
  55.     moveml    sp@+,d2-d4/a2-a3
  56.     rts
  57. fastMatch:
  58.     movew    #255,d0
  59.     subw    i,d0
  60.     moveml    sp@+,d2-d4/a2-a3
  61.     rts
  62.